반응형
http 설정 방법모든 API 엔드포인트에 대해 ResponseWriter Content-Type 헤더를 글로벌하게 사용하시겠습니까?
저는 Go에 처음 참여해서 간단한 API를 구축하고 있습니다.
package main
import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"github.com/gorilla/handlers"
"log"
"net/http"
)
func main() {
port := ":3000"
var router = mux.NewRouter()
router.HandleFunc("/m/{msg}", handleMessage).Methods("GET")
router.HandleFunc("/n/{num}", handleNumber).Methods("GET")
headersOk := handlers.AllowedHeaders([]string{"Authorization"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "POST", "OPTIONS"})
fmt.Printf("Server is running at http://localhost%s\n", port)
log.Fatal(http.ListenAndServe(port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
}
func handleMessage(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
message := vars["msg"]
response := map[string]string{"message": message}
w.Header().Set("Content-Type", "application/json") // this
json.NewEncoder(w).Encode(response)
}
func handleNumber(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
number := vars["num"]
response := map[string]string{"number": number}
w.Header().Set("Content-Type", "application/json") // and this
json.NewEncoder(w).Encode(response)
}
자꾸 반복하는 건 좀 이상한 것 같아w.Header().Set("Content-Type", "application/json")
제가 가지고 있는 모든 API 함수에 줄을 긋습니다.
여기서 궁금한 것은 이 http를 설정할 수 있느냐는 것입니다.ResponseWriter Content-Type 헤더는 모든 API 함수에 대해 글로벌하게 표시됩니까?
정의할 수 있습니다.middleware
mux 라우터의 예를 다음에 나타냅니다.
func main() {
port := ":3000"
var router = mux.NewRouter()
router.Use(commonMiddleware)
router.HandleFunc("/m/{msg}", handleMessage).Methods("GET")
router.HandleFunc("/n/{num}", handleNumber).Methods("GET")
// rest of code goes here
}
func commonMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
next.ServeHTTP(w, r)
})
}
상세한 것에 대하여는, 메뉴얼을 참조해 주세요.
언급URL : https://stackoverflow.com/questions/51456253/how-to-set-http-responsewriter-content-type-header-globally-for-all-api-endpoint
반응형
'programing' 카테고리의 다른 글
AngularJS - ng-repeat에 의해 생성된 라디오 버튼 선택 시 모델이 업데이트되지 않음 (0) | 2023.03.08 |
---|---|
phpmyadmin에서 필드를 열면 mySQL 데이터베이스가 변경되지만 변경되지 않습니다. (0) | 2023.03.08 |
jQuery.ajax - 모든 요소를 수동으로 입력하지 않고 형식으로 전송합니다. (0) | 2023.03.08 |
유형 '{}'은 유형 'IntrinsicAttributes & IntrinsicClassAttributes'에 할당할 수 없습니다. (0) | 2023.03.08 |
종속성에 대한 항목을 찾을 수 없습니다. 이 종속성에 대한 자동 배선 후보로 적합한 콩이 하나 이상 필요합니다.종속성 주석: (0) | 2023.03.08 |