Code Monkey home page Code Monkey logo

fringe81_homework's Introduction

README

仕様について

今回は課題書に書かれた機能をつけたAPIサーバーをscalaを用いて作成した。今回初めてscalaを触りスケーラブルな言語という意味を少し理解できたと思う。
主な機能はTwitterのようなマイクロブログアプリケーションを作成するというものである。保存する先はMySQLを用いる。そのためDBとの非同期通信が必要になる。また、パスを応じてのルーティングやその処理も行う必要がある。

できた部分

今回は時間内に指定した通りの仕様にすることはできなかった。そのためチェックコードでの評価が悪かった。しかし、必要な機能は全て設定することはできた。 それについて説明を行いたい。
まず用いたDBのデータを表示する。最初の図が何も操作していない状態。もう一つの図が全操作を行った後の状態を指す。 DB_1

DB_2

1. GET /posts

このルーティングは全投稿の表示である。 仕様では、{“posts”: [全投稿]} という形で出力する必要があるが、作成したAPIサーバーはDB内のデータをjson形式にして表示する。そのためjsonがワンラインになった。また、最初の {"post":} を付けて表示していない。

GET

2. POST /posts/create

このルーティングは投稿の作成にあたる。 仕様では成功時、{“result”:”ok”} となり、失敗時、{“result”:”NG”, “message”:[特定のエラー]} と表示する必要がある。作成したサーバーでは、成功、失敗の両方の場合において適切なメッセージを表示することができた。 今回はユーザーのIDを事前にDBに登録しておき、投稿がそのユーザーか否かを判断する必要がある。

POST

POST

3. GET /posts/:post_id/comments

このルーティングではクエリ上で指定したIDをもつ投稿を表示するというもの。 DBから該当する投稿を取得して表示することが必要になる。作成したサーバーでも適切に投稿を取得して表示することができた。

GET

4. POST /posts/:post_id/comments/create

このルーティングではクエリ上で指定した投稿に対してのコメントを作成するというもの。 DBから該当する投稿があるかどうかを確認したあと、コメントを保存するということが求められる。またコメントをする投稿のcomment_countを増やすということも必要である。 作成したサーバーでも必要な動作を行うことができた。

POST

POST

できなかった部分

  1. 表示がうまくjson形式に整形できなかった。
    全投稿の表示はjsonとして表示できたが、postした時のメッセージやget,postのエラーメッセージがplain/text形式になってしまった。整形する方法を探したがうまく見つけることができなかった。

  2. jsonの表示がうまくできなかった。
    全投稿の表示や該当のコメントを表示する際、DBからデータを取得することはできたがそれをそのまま出力するプログラムにしたため、要求される形で出力できなかった。

fringe81_homework's People

Contributors

littletake avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.