ただのSEの備忘録

技術からニュース、くだらない雑学まで何でもまとめるブログ

*

自作API|リクエストをservletへ投げてデータをJSONで返却する方法~実装編|その1~

      2014/07/18


前回無料で自作APIを作成するまでの準備方法をレクチャーしましたが、今回は実際にjavaを作成し、URLを渡してJSON形式で値を返却するまでをレクチャーしたいと思います。

(前回の「自作API|リクエストを投げてデータをJSONで返却する方法~準備編~」はこちら

 

今回私はバイクの車種一覧をフリーワードで返却するAPIを作成しました。

http://1-dot-kenisfriendly223.appspot.com/action/moto/getGarage?kw=好きな車種名

コチラを参考にAPI作成を書いていきたいと思います。

まずは、src配下を選択し右クリック-新規-classを選択します。ここでclass名を選択します。

私はMVCのCをactionと置き、その中のバイクということで、「src/server/action/moto/GetGarage」にしました。

ここの階層はどんなものでも構いません。

0001

 

このクラスに作ったファイルがこちらになります。

スポンサードリンク

package server.action.moto;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.arnx.jsonic.JSON;
import server.bean.moto.MotoBean;
import server.logic.GetGarageLogic;

public class GetGarage extends HttpServlet{
GetGarageLogic logic = new GetGarageLogic();
public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException{

String kw = req.getParameter("kw");
List<MotoBean> list = logic.getGarage(kw);

res.setContentType("text/plain");
res.setContentType("text/html; charset=UTF-8");

req.setAttribute("list", list);
PrintWriter writer = res.getWriter();

writer.print(JSON.encode(list));
// RequestDispatcher dispatch = req.getRequestDispatcher("/Contents.html");
// dispatch.forward(req, res);
}
}

このへんはservletでhttpをする際ののおまじないですね。


public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException{

}

リクエストでパラメータを受け取るには下記のように受け取ります。今回フリーワードを受け取りたかったため、「kw」を受け取っています。


String kw = req.getParameter("kw");

 

 

今回普通にJSPにforwardするウェブアプリケーションでよければ


RequestDispatcher dispatch = req.getRequestDispatcher("/Contents.html");
dispatch.forward(req, res);

でよいのですが、JSONでどう返却すればよいのかわからず、ハマってしまいました。

解決策としいては、下記のようにwriterで送ることできちんとJSON形式で返してくれます。


PrintWriter writer = res.getWriter();

writer.print(JSON.encode(list));

これで受け取ったリクエストをごにょごにょして、JSON形式で返却するところまで完成です!

次はこの「ごにょごにょ」説明したいと思います。

 

自作API|リクエストを投げてデータをJSONで返却する方法~実装編|その2~」へ続く..

 - Java