Gin 프레임워크로 RESTful API 만들기

게시 됨: 2022-09-02

Gin 프레임워크의 도움으로 REST API를 만들고 싶으십니까? 그런 다음 이 블로그를 철저히 읽어야 합니다. 간단한 단계를 통해 기본 API를 만드는 방법을 배우고 다른 복잡한 프로젝트를 수행할 수 있습니다. 그리고 네, Golang 개발 서비스를 이용하지 않고도 스스로 문제를 해결할 수 있습니다 . 그러나 시작하기 전에 Gin 프레임워크의 이론적 측면에 대해 알아두십시오.

  1. 달성해야 할 첫 번째 과제
  • go-workspace에서 먼저 디렉토리를 만들어야 합니다. Windows 컴퓨터를 사용하는 경우 명령 프롬프트를 사용합니다. macOS 또는 Linux를 운영 체제로 사용하는 경우 터미널을 사용하십시오.
  • 이 시나리오에서는 명령 프롬프트를 사용하겠습니다.

cd go-workspace

mkdir 작업

CD 작업

코드 .

code .를 입력하면 VS Code가 실행되는 것을 볼 수 있습니다. 귀하의 경우에는 다른 IDE 또는 편집기일 수 있습니다.

  1. VS 코드 시작하기
  • 가장 먼저 할 일은 main.go 파일을 만드는 것입니다. 그런 다음 REST API를 생성하기 위해 gin 프레임워크를 다운로드해야 합니다.
  • 이제 go.mod 파일을 빌드해야 합니다. 우리는 다음을 입력합니다:

이동 모드 초기화 golang.com/job

  • go.mod 파일을 만든 후 다음을 입력합니다.

github.com/gin-gonic/gin으로 이동

이렇게 하면 go.sum 파일이 생성되고 gin 프레임워크와 관련된 필요한 모든 패키지가 다운로드됩니다.

  1. 간단한 API 시작하기
  • 우리는 그냥 코드를 적어

패키지 메인

수입(

"fmt"

"넷/http"

"github.com/gin-gonic/gin"

)

함수 메인()

{s :=gin.Default()

s.GET("", func(c *gin.Context){

c.String(http.StatusOK, “직무는 무엇입니까?”)

})

s.Run(“로컬호스트: 8000”)

}

  • 보시다시피 응용 프로그램에 필요한 모든 패키지를 가져왔습니다. 그런 다음 함수 main으로 직접 진행합니다. 우리가 하고 있는 것은 Gin에 대한 복구 또는 로거 미들웨어 기본 모듈을 구축하는 것입니다.
  • 기본 설정은 변수 "s"에 포함됩니다. 그리고 이 변수를 사용하여 GET API 개발을 지원할 것입니다. 이 예제에서 내가 지정한 첫 번째 인수는 API의 URL입니다.
  • w.Run("localhost:8000")에 의해 지정된 기본 URL은 localhost:8000에서 API를 호스팅하는 데 사용됩니다. 또한 첫 번째 인수는 실제로 API의 상대 경로를 나타냅니다.
  • 핸들러 함수 func(c *gin.Context)는 제공할 수 있는 함수 시퀀스를 참조합니다.
  • *gin.Context 변수에 대한 포인터는 함수의 인수로 사용됩니다. 따라서 이 경우 "c"는 컨텍스트를 나타냅니다.
  • 컨텍스트는 c.String 또는 c.JSON인 값을 반환해야 합니다. 여기에서 작동하는 두 가지 기준이 있습니다. 상태는 첫 번째 인수인 간단한 정수(http.StatusOK)로 표시됩니다. net/http 패키지를 가져왔기 때문에 이것을 사용할 수 있습니다.
  • 이 후에 샘플 문자열을 보낼 뿐입니다. "직무는 무엇입니까?"입니다.
  1. 위의 프로그램을 실행해보자

프로그램을 실행하려면 go run main.go를 입력해야 합니다.

  • 보시다시피 빈 URL에 GET 요청이 있습니다. 또한 사용자 정의 기능이 제공됩니다. 또한 엔진의 릴리스 모드 작동이 표시됩니다. localhost 8000에는 단일 활성 엔드포인트가 있습니다.
  • 웹 브라우저에서 localhost:8000을 입력하여 다음을 볼 수 있습니다.
  • 그동안 VS Code에서 다음 스냅샷을 볼 수 있습니다.

이것은 무엇을 의미 하는가? 음, gin 프레임워크는 실행되는 코드의 응답 시간을 모니터링하는 데 중요한 역할을 합니다.

  1. URL에서 매개변수 전달을 처리하는 GET API에 집중

다음 코드는 API가 URL에 대한 응답으로 값(이상적으로는 문자열)을 제공한다고 가정합니다.

s.GET("/:get", func(c *gin.Context){

var val = c.Param("getr")

c.JSON(http.StatusOK, gin.H{

"응답 데이터": val,

})

})

//두 번째 섹션

  • 콜론으로 구분하여 각 변수 이름을 GET 요청에 제공할 수 있습니다. 따라서 기본 URL 뒤에 입력되는 모든 항목은 "가져오기"로 간주됩니다.
  • "get"의 값을 결정하려면 Param의 컨텍스트와 우리가 언급한 변수의 이름을 정의해야 합니다. Val은 Gin으로부터 'get'을 받고 결과를 알립니다.
  • 다음으로 값이 포함된 JSON을 전송하고 있음을 알 수 있습니다.

복잡한 작업을 하고 있습니까? 그런 다음 문제를 발견하고 해결할 수 없는 경우에 대비하여 Golang 개발 서비스 를 이용하는 것이 가장 좋습니다.

  1. 위의 프로그램을 실행해보자
  • 다시 말하지만 go run main.go를 입력하여 프로그램을 실행해야 합니다.

'tcp 127.0.0.1: 8000: bind:각 소켓 주소(프로토콜/네트워크 주소/포트)는 일반적으로 한 번만 사용이 허용됩니다.'라는 메시지가 표시되면 명령 프롬프트에서 작업을 수행해야 합니다.

네스타트-아노 | findstr :8000

LISTENING 값(예: 7932)을 확인한 다음 다음을 입력해야 합니다.

taskkill / PID 7932 /F

이것은 pid 프로세스의 종료로 이어질 것입니다.

  • 브라우저에서 다음을 수행합니다.

localhost:8000을 입력한 후 문자열을 입력해야 하는 이유는 API가 URL에서 문자열을 예상하기 때문입니다.

  1. POST API 시도
  • 여기에서 POST API에 연결을 시도합니다. 또한 데이터가 신체에 존재한다는 것을 알고 있습니다. 이 때 구조체가 유용할 것입니다.
  • 이 부분을 기억하시나요?

패키지 메인

수입(

"fmt"

"넷/http"

"github.com/gin-gonic/gin"

)

  • 다음으로 볼 수 있는 것처럼 두 개의 데이터 필드가 있는 구조체를 만듭니다.

유형 작업 구조 {

급여 int `json:"salary" 바인딩: "필수"`

이름 문자열 `json:"name" 바인딩: "필수"`

}

  • json:"salary" 및 json:"name"은 다른 키를 나타냅니다. 또한 바인딩이 "필수"로 지정되었음을 알 수 있습니다.
  • //두 번째 섹션 다음에 다음을 입력합니다.

s.POST("/하이라이트", func(c *gin.Context){

var 데이터 작업

if err := c.ShouldBind(&data); 오류 != 없음{

fmt.Println(오류)

c.JSON(http.StatusBadRequest, gin.H{

"오류": fmt.Sprintf("%v", 오류),

})

} 또 다른{

c.JSON(http.StatusOK, gin.H{

"데이터": 데이터,

})

}

})

  • 이 코드 블록을 살펴보겠습니다. s.POST에서 우리는 Job에 대한 객체를 생성할 것입니다. 그런 다음 컨텍스트 "c"가 그 후에 데이터 모델에 첨부되어야 합니다. c.ShouldBind(&data)에서 오류가 발생하면 API에 문제가 있음을 알립니다.
  • c.JSON(http.StatusBadRequest)의 "error":fmt.Sprintf("%v", err)에서 관찰된 오류를 보여주는 잘못된 요청을 했습니다.
  • 문제가 없으면 "데이터" 키를 사용하여 데이터를 API 응답으로 다시 전송합니다.
  1. 코드의 마지막 블록을 실행해 봅시다.
  • 이제 프로그램의 마지막 단계를 살펴보겠습니다. 이를 수행하려면 go run main.go를 입력해야 합니다. 또한 Postman을 사용하여 API 작동 방식과 코드 작동 방식을 보여드리겠습니다. 데스크탑 버전만 설치하면 됩니다.
  • 아래 스크린샷을 보면 본문에 두 개의 데이터 필드가 있음을 알 수 있습니다. Raw 및 JSON은 Body의 선택 사항이어야 합니다.
  • '보내기'를 클릭하면 다음과 같은 결과가 표시됩니다.

{

"데이터": {

"급여": 23000,

"이름": "로버트 홀"

}

}

프로그램을 이해할 수 있었습니까? 예? 그럼 대단해. 마지막 경우에는 URL에 언급되지 않은 API, 문자열을 예상하는 API, 본문의 값을 예상하는 마지막 API 등 3개의 API가 실행되고 있는 것을 볼 수 있습니다. 이제 몇 가지 어려운 REST API 작업을 해결할 수 있기를 바랍니다.