1
2

More than 1 year has passed since last update.

SpringBoot @GetMappingについて

Posted at

@GetMappingアノテーション付きメソッドは、与えられたURI表現式と一致するHTTP GETリクエストを処理します。

PersonController.java
package com.informanaging.project.demo.controller;

import com.informanaging.project.demo.domain.Person;
import com.informanaging.project.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RequestMapping(value = "/api/person")
@RestController 
public class PersonController {
    @Autowired
    private PersonService personService;

    @GetMapping
    @RequestMapping(value = "/{id}") // /api/person/{id}의 특정 위치에 있는 값을 PathVariable 로 받겠다는 의미이다. id 와  {id} 가 mapping된
   public Person getPerson(@PathVariable Long id) {
        return personService.getPerson(id);
    }
}

@RequestMapping(value = "/api/person")
@RequestMappingアノテーションはSpringウェブアプリケーションで最も頻繁に使用されているアノテーションです。クラスに定義したアノテーションは
localhost:8080/api/personとマッピングされます。クラスに定義したので、scopeはクラス全体です。

@RestController
:RESTAPI Controllerを使用することをフレームワークに知らせます。

@GetMapping
:定義した該当メソッドはHttpMethodの中GET Requestを受けます。

@RequestMapping(value = "/{id}")
:localhost:8080/api/person/idとマッピングされます。scopeはgetPerson()です。
/api/person/{id}の特定位置({id})にある値をPathVaraiable Long idにて受け取るとの意味になります。value = "{id}"のidとLong idのidがマッピングされます。

@GetMapping
@RequestMappin(value = "{id}")
上の2行は、以下のように1行にすることも可能です。
@GetMapping("{id}")

PersonControllerTest.java:PersonControllerテストコード
package com.informanaging.project.demo.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
public class PersonControllerTest {

    @Autowired
    private PersonController personController;

    private MockMvc mockMvc;

    @Test
    void getPerson() throws Exception {
        mockMvc = MockMvcBuilders.standaloneSetup(personController).build();

        mockMvc.perform(
                MockMvcRequestBuilders.get("/api/person/1"))
                .andDo(MockMvcResultHandlers.print())
                .andExpect(MockMvcResultMatchers.status().isOk());
    }
}

image.png

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2