Golang에서 간단한 웹 서버를 어떻게 구축합니까?
예, GO의 NET/HTTP 패키지를 사용하면 간단한 웹 서버를 쉽게 구축 할 수 있습니다.이 웹 서버는 몇 줄의 코드만으로 라우팅 처리, 정적 파일 서비스 및 구조화 된 프로세서를 구현할 수 있습니다. http.listenandserve로 서버를 시작하고 지정된 포트를 듣습니다. 마지막으로, Go Run Main.Go를 실행하고 브라우저에서 http : // localhost : 8080을 방문하여 효과를 확인하십시오. 전체 프로세스에는 외부 의존성이 필요하지 않으며 학습 및 소규모 도구 개발에 적합합니다.
GO에 간단한 웹 서버를 구축하는 것은 내장 net/http
패키지 덕분에 간단합니다. 기본 기능에 대한 외부 종속성이 필요하지 않습니다. 최소하지만 기능적인 웹 서버를 만드는 방법은 다음과 같습니다.
기본 HTTP 서버를 설정하십시오
GO 웹 서버의 핵심은 http.ListenAndServe
함수로 지정된 포트에서 서버를 시작하고 들어오는 요청을 듣습니다.
패키지 메인 수입 (수입) "FMT" "net/http" )) func main () { http.handlefunc ( "/", func (w http.responsewriter, r *http.request) { fmt.fprintf (W, "안녕하세요, 세계! 이것은 간단한 이동 웹 서버입니다.") }) fmt.println ( "서버는 http : // localhost : 8080에서 실행 중입니다") http.listenandserve ( ": 8080", NIL) }
이 코드 :
-
http.HandleFunc
사용하여 루트 경로 (/
)에 대한 핸들러를 등록합니다. - 익명 기능을 사용하여 응답을 작성합니다.
- 포트 8080에서 서버를 시작합니다.
go run main.go
와 함께 실행 한 다음 브라우저에서 http://localhost:8080
방문하십시오.
다른 경로를 처리하십시오
여러 경로를 쉽게 등록 할 수 있습니다.
http.handlefunc ( "/", func (w http.responsewriter, r *http.request) { fmt.fprintf (w, "홈페이지에 오신 것을 환영합니다!") }) http.handlefunc ( "/about", func (w http.responsewriter, r *http.request) { fmt.fprintf (w, "이것은 정보 페이지입니다.") }) http.handlefunc ( "/user/", func (w http.responsewriter, r *http.request) { 경로 : = r.url.path 사용자 이름 : = path [len ( "/user/") :] // 경로에서 사용자 이름을 추출합니다 fmt.fprintf (w, "사용자 프로필 : %s", 사용자 이름) })
GO의 기본 멀티플렉서는 /
, /user/alex
로 끝나는 경로의 접두사와 일치합니다.
정적 파일을 제공하십시오
CSS, JavaScript 또는 이미지와 같은 정적 자산을 제공하려면 http.FileServer
사용하십시오.
FS : = http.fileserver (http.dir ( "static/")) http.handle ( "/static/", http.stripprefix ( "/static/", fs))
파일을 static
이라는 폴더에 배치하면 /static/filename.ext
에서 액세스 할 수 있습니다.
사용자 정의 핸들러로 구조를 개선하십시오
main
의 모든 것을 정의하는 대신 이름이 지정된 핸들러 기능을 정의 할 수 있습니다.
FUNC HOMEHANDLER (w http.responsewriter, r *http.request) { fmt.fprintf (w, "홈페이지") } FUNC JSONHANDLER (w http.responsewriter, r *http.request) { w.header (). set ( "content-type", "application/json") fmt.fprintf (w,`{ "message": "hello from json"}`) } func main () { http.handlefunc ( "/", 홈 핸들러) http.handlefunc ( "/json", jsonhandler) fmt.println ( "서버 시작 : 8080") err : = http.listenandserve ( ": 8080", nil); err! = nil { fmt.printf ( "서버 실패 : %v \ n", err) } }
따라서 코드를보다 모듈화하고 테스트 할 수 있습니다.
몇 가지 실용적인 메모 :
-
ListenAndServe
의 오류를 항상 처리하십시오. 오류가 없으면 돌아 오지 않습니다. -
ListenAndServe
의 두 번째 논쟁은 사용자 정의 라우터입니다. 통과nil
기본http.DefaultServeMux
사용합니다. - 생산 사용의 경우 시간 초과, 우아한 종료 및 미들웨어를 고려하지만이 기본 버전은 학습 또는 소규모 도구에 적합합니다.
기본적으로, 그것이 작동하는 웹 서버를 이동하는 데 필요한 전부입니다. 간단하고 빠르며 추가 도구가 필요하지 않습니다.
위 내용은 Golang에서 간단한 웹 서버를 어떻게 구축합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

GoprovidesBuilt-insupportforpportforhandlingEnviriablesviatheSpackage, enabledeveloperstoread, set, set, and manageenvirondmentdataSecirenficely.toreadavariable, auseos.getenv ( "key"), whitherturnsanemptystringifthekeyisnotset, orcombineos.lo

GO에서 사용자 정의 오류 유형을 생성하고 사용하면 오류 처리의 표현성과 디버그 가능성이 향상 될 수 있습니다. 답은 Error () 메소드를 구현하는 구조를 정의하여 사용자 정의 오류를 만드는 것입니다. 예를 들어, ValidationError에는 필드 및 메시지 필드가 포함되어 있으며 형식화 된 오류 정보를 반환합니다. 그런 다음 다른 로직을 실행하기 위해 유형의 어설 션 또는 오류를 통해 특정 오류 유형을 감지하여 기능에서 오류를 반환 할 수 있습니다. 구조화 된 데이터, 차별화 된 처리, 라이브러리 내보내기 또는 API 통합이 필요한 시나리오에 적합한 ISCritical to 사용자 정의 오류와 같은 행동 방법을 추가 할 수도 있습니다. 간단한 경우, ErrnotFound와 같은 사전 정의 된 오류 및 비교할 수 있습니다.

GO 제네릭 및 컨테이너/목록을 사용하여 스레드 안전 LRU 캐시를 달성하십시오. 2. 핵심 구성 요소에는 맵, 양방향 링크 된 목록 및 뮤트 잠금 장치가 포함됩니다. 3. 작업 및 추가 작업은 O (1)의 시간 복잡성으로 잠금을 통해 동시성 보안을 보장합니다. 4. 캐시가 가득 차면 가장 긴 미사용 항목은 자동으로 제거됩니다. 5. 예에서 용량 3 인 캐시는 가장 긴 미사용 "B"를 성공적으로 제거했습니다. 이 구현은 일반적이고 효율적이며 확장 가능합니다.

GO 애플리케이션에서 신호를 처리하는 올바른 방법은 OS/신호 패키지를 사용하여 신호를 모니터링하고 우아한 종료를 수행하는 것입니다. 1. 신호를 사용하여 Sigint, Sigtern 및 기타 신호를 채널로 보내려면. 2. Goroutine에서 주요 서비스를 실행하고 대기 신호를 차단하십시오. 3. 신호를받은 후 컨텍스트를 통해 시간 초과로 우아한 종료를 수행하십시오. 4. 데이터베이스 연결을 닫고 배경 고로 틴을 중지하는 것과 같은 리소스 정리; 5. Signal.Reset을 사용하여 Kubernetes 및 기타 환경에서 프로그램을 안정적으로 종료 할 수 있도록 기본 신호 동작을 복원하십시오.

usefilepath.join () toSafelyConstructPathsWithCorrectos-specificseparators.2.usefilepath.clean () toremoveredUndantElements ".."및 "."

Proughoughputandlowerlatency, 특히 orfori/o-heavyservices, duetoitslightgeightgoroutinesandefficientscheduler, whilejava, hithlowstart, canmatchgoincpu-boundtasksafterjitoptimization.2.gousessme

GO에서 함수를 정의하고 호출하면 Func Keyword를 사용하고 다음 고정 구문을 사용하여 먼저 답을 명확히합니다. 함수 정의에는 이름, 매개 변수 유형, 반환 유형 및 기능 본체가 포함되어 있어야합니다. 1. funcadd (a, bint) int {return b}와 같은 함수를 정의 할 때 funcfunctionName (params) returnType {} 구문을 사용하십시오. 2. funcdivide (a, bfloat64) (float64, bool) {}와 같은 다중 반환 값을지지합니다. 3. 호출 함수는 기능 이름을 브래킷과 함께 직접 사용하여 결과와 같은 매개 변수를 전달합니다. = add (3,5); 4. 다중 반환 값은 변수 또는

Gofeed 라이브러리를 사용하여 RSS 및 Atomfeed를 쉽게 구문 분석하십시오. 먼저 Gogetgithub.com/mmcdole/gofeed를 통해 라이브러리를 설치 한 다음 파서 인스턴스를 작성하고 Parseurl 또는 Parsestring 메소드를 호출하여 원격 또는 로컬 피드를 구문 분석하십시오. 라이브러리는 자동으로 형식을 인식하고 통합 피드 구조를 반환합니다. 그런 다음 오버 피드를 반복하십시오. 항목은 제목, 링크 및 출판 시간과 같은 표준화 된 필드를 얻습니다. 또한 HTTP 클라이언트 타임 아웃을 설정하고, 구문 분석 오류를 처리하며, 캐시 최적화 성능을 사용하여 궁극적으로 간단하고 효율적이며 안정적인 피드 해상도를 달성하는 것이 좋습니다.
