【SpringBoot】MavenとVSCodeでAPI開発(Json)

1. 概要

JavaでAPIを開発する。

  • VSCode
  • JDK
  • Extension Pack for Java
  • Spring Boot Extension Pack
  • API開発
  • JSONデータを返す
    • Gson
    • Lombok

対象としてはJavaを使ってAPIを開発してみたい方になります。

2. VSCodeのインストール

2-1. こちらを参考

3. JDKのインストール

3-1. こちらを参考

4. Extension Pack for Javaのインストール

4-1. こちらを参考

5. Spring Boot Extension Packのインストール

5-1. インストール

6. プロジェクトの生成(SpringBootとMaven)

6-1. Javaプロジェクトの生成

  • プロジェクト名「sample_web」
    • Command Palette (Ctrl+Shift+P)を使い、「Spring Initializr: Create a Maven Project…」を選択
    • 「2.7.0」を選択
    • 「Java」を選択
    • Group ID「com.test.example」を入力し、エンター
    • Artifact ID「sample_web」を入力し、エンター
    • 「Jar」を選択
    • 「11」を選択
    • 「Spring Web」を選択し、エンター
    • プロジェクトを生成するディレクトリを選択し、エンター
    • プロジェクトが生成される

6-2. 実行

  • 生成されたプロジェクトを開く
  • 実行は「Run」をクリック

7. API開発

7-1. API

  • 新しいディレクトリとJavaファイルを生成
    • controller/Sample.java
  • ソースコード
package com.test.example.sample_web.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Sample {
    @GetMapping("/")
    public String hello() {
        return "Hello!";
    }
}

7-2. 実行

sondon@Sondon:~$ curl localhost:8080
Hello!

8. JSONデータを返す

8-1. Add a dependency…

  • gson
    • ObjectからJsonへ変換
  • lombok
    • Annotation指定でSetterが使用可能

8-2. Lombok Annotations Support For VS Code

  • インストール

8-3. ディレクトリとJavaファイルを生成

  • entity/User.java
  • ソースコード
package com.test.example.sample_web.entity;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Data
@NoArgsConstructor
@Setter
public class User {
    private Long id;
    private String name;
    private String email;
}

8-4. Jsonデータを返すソースコード

package com.test.example.sample_web.controller;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.test.example.sample_web.entity.User;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Sample {
    @GetMapping("/")
    public String hello() {
        return "Hello!";
    }

    @GetMapping("/userList")
    public String getUser() {
        List<User> userList = new ArrayList<User>();

        User user1 = createUser((long) 1, "John", "john@hoge.com");
        userList.add(user1);

        User user2 = createUser((long) 2, "Kim", "kim@hoge.com");
        userList.add(user2);

        User user3 = createUser((long) 3, "Tanaka", "tanaka@hoge.com");
        userList.add(user3);

        Gson gson = new Gson();
        String jsonData = gson.toJson(userList);
        System.out.println(jsonData);
        return jsonData;
    }

    private User createUser (long id, String name, String email) {
        User user = new User();
        user.setId(id);
        user.setName(name);
        user.setEmail(email);
        return user;
    }
}

8-5. 実行

curl localhost:8080/userList
[{"id":1,"name":"John","email":"john@hoge.com"},{"id":2,"name":"Kim","email":"kim@hoge.com"},{"id":3,"name":"Tanaka","email":"tanaka@hoge.com"}]

8-6. 整形

[
    {
        "id": 1,
        "name": "John",
        "email": "john@hoge.com"
    },
    {
        "id": 2,
        "name": "Kim",
        "email": "kim@hoge.com"
    },
    {
        "id": 3,
        "name": "Tanaka",
        "email": "tanaka@hoge.com"
    }
]

9. 参考

投稿者プロフィール

Sondon
開発好きなシステムエンジニアです。
卓球にハマってます。

関連記事

  1. インターフェース定義からSpringFrameworkのコードを自動生…

  2. インターフェース定義からSpringFrameworkのコードを自動生…

  3. 【Java】Maven, VSCode

  4. 【SpringBoot&MyBatis】SQLでJobPar…

最近の記事

  1. AWS
  2. AWS
  3. AWS
  4. flutter

制作実績一覧

  1. Checkeys