Advent-of-spin Challenge 1

이 포스트는 advent-of-spin에 업로드 된 Challenge 1에 대해서 진행했던 내용을 정리한 포스트 입니다.

Rust 언어로 진행하였으며 이 포스트에 게시된 소스코드는 Github 에서 확인할 수 있습니다.

Spec

  • Response의 Header에 Content-Type: application/json 명시하기
  • {message: "Hello, world!"} 형식의 Json Payload를 Response에 담기

Work

  • spin new 명령어로 새로운 프로젝트를 생성합니다. Untitled Untitled
  • spin build 로 빌드 할 수 있습니다 Untitled
  • spin up 으로 실행 가능 Untitled Untitled
  • lib.rs 파일을 아래와 같이 수정하여 response body의 데이터를 변경해 주었습니다.

    use anyhow::Result;
    use spin_sdk::{
        http::{Request, Response},
        http_component,
    };
    
    /// A simple Spin HTTP component.
    #[http_component]
    fn challenge(req: Request) -> Result<Response> {
        println!("{:?}", req.headers());
        let data = r#"{
            "message": "Hello, world!"
        }"#;
        Ok(http::Response::builder()
            .status(200)
            .header("Content-Type", "application/json")
            .body(Some(data.into()))?)
    }
    
  • 위에서 안내한 대로 빌드 후 서버를 실행해 Response를 확인 해 보았습니다.
    • 정상적으로 header에 application/json 이 명시되어 있고 response body도 정상적으로 출력 되고 있음을 확인할 수 있습니다. Untitled
  • make test 명령어로 테스트를 수행 해 보았습니다.
    • Hurl 을 설치해야 합니다. Untitled
  • spin deploy 로 cloud 에 deploy 합니다. Untitled
  • 아래 명령어로 과제 제출
    • serviceUrl 은 위에 deploy를 통해서 획득한 endpoint를 넣으면 됩니다.
      hurl --variable serviceUrl="https://challenge-rtbzeodc.fermyon.app" submit.hurl
      

      Untitled