【Spring Boot入門(5)】RestAPI(POST)を作ってみる

はじめに

前回、Spring BootでRest API(GET)を作成してDBからデータを取得してJSON形式で返却するAPIを作成しました。

 

今回は、リクエストされたデータをDB登録するRest API(POST)をSpring Bootで作成していきます。

今回やることを絵にするとこんな感じ

 

 

 環境

  • OS:OS X 10.11 El Capitan
  • STS:3.8.4.RELEASE

前提

以下が完了している前提で説明します。

【Spring Boot入門(4)】Rest API(GET)を作ってみる

 

 

Rest API(POST)の作成

RestAPI(POST)は前回作成したソースコードに対して以下の変更を行います。

  1. サービス・クラス作成(ItemService.java)修正
  2. コントローラ(ItemController.java)修正

 

1.サービス・クラス作成(ItemService.java)修正

src/main/java/com/example/service/ItemService.javaに商品登録サービスを追加します。

src/main/java/com/example/service/ItemService.java
package com.example.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.example.domain.Item;
import com.example.repository.ItemRepository;

@Service
@Transactional
public class ItemService {
	@Autowired
	ItemRepository itemRepository;
	
	/**
	 * 商品一覧取得サービス
	 * @return List<item>
	 */
	public List<Item> findAll() {
		return itemRepository.findAll();
	}
	
	/**
	 * 商品登録サービス
	 * @param item
	 * @return item
	 */
	public Item create(Item item) {
		return itemRepository.save(item);
	}
}

2.コントローラ(ItemController.java)修正

src/main/java/com/example/api/ItemRestController.javaにPOSTメソッドでリクエストされた際に動作するAPIを定義します。

src/main/java/com/example/api/ItemRestController.java
package com.example.api;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import com.example.domain.Item;
import com.example.service.ItemService;

@RestController
@RequestMapping("api/items")
public class ItemRestController {
    @Autowired
    ItemService itemService;
    
    /**
     * 商品一覧取得API
     * @return List<item>
     */
    @GetMapping
    List<Item> getItems() {
        List<Item> customers = itemService.findAll();
        return customers;
    }
    
    /**
     * 商品登録API
     * @param item
     * @return item
     */
    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    Item postItem(@RequestBody Item item) {
    	return itemService.create(item);
    }

}
以上でRestAPI(POST)の修正は完了です。

 

 

Rest API(POST)の動作確認

パッケージ・エクスプローラーでsrc/main/java/com/example/RestApiApplication.javaを右クリック>実行>Spring Boot アプリケーションでAPサーバを起動します。

 

Google Chromeで「http://localhost:8080/api/items」にアクセスします。

 

ターミナルを開いて、curlコマンドでRestAPI(POST)経由で商品「もも」を登録します。

command
$ curl http://localhost:8080/api/items -i -XPOST -H "Content-Type: application/json" -d "{\"name\":\"もも\",\"price\":\"1000\",\"imgPath\":\"peach.jpg\"}"
HTTP/1.1 201 
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 01 Jul 2017 23:26:19 GMT

{"id":5,"name":"もも","price":1000,"imgPath":"peach.jpg"}
再度、Google Chromeで「http://localhost:8080/api/items」にアクセスします。

商品が新規登録されていることが確認できました。

以上で、Spring BootによるRestAPI(POST)の作成は完了です。

 

 

おわりに

今回はSpring BootでRest API(POST)作成について解説しました。

前回Rest API(GET)を作成していたこともあって、

Rest APIの作成は非常に簡単だったと思います。

 

業務でAPIを作成する場合は、リクエストパラメータに秘密鍵を詰めて、メイン処理の前に認証処理を行うかと思いますが、、、今回はその辺は意識してません。。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください