初めてのレンダリングと移動を使用する



私の能力は、私の妻が狂ったドライブすることができます覚えている.今週初め、私は彼女に私の長期記憶から思い出した話をしてから2つの質問をしました.
  • どうやってそんなことを思い出すの?
  • なぜあなたもその記憶を覚えていますか?
  • 正直なところ、彼女の質問にどのように答えたらいいのかわからない.「無用のトリビアショー」があるならば、我々は世界チャンピオンになるでしょう...
    私が初めて経験した出来事は、私の脳の長期的な部屋にしばしばインデックス付けられているような気がします.キャリアの意味では、プログラミング言語で働いたり、サービスやフレームワークを使用し始めたのを思い出すのはあまり難しくない.
    提供するサービスについて読むRender — “ゼロデップ”を約束する1つ-私はテストドライブのためにそれを取りたい.サポートされている言語のリストを見て、私は、私にとって新しいプログラミング言語でサービスを作成する機会を見ました.
    結果として、私はGo プログラミング言語Aショット、私の長期的なメモリバンクに新しい預金を追加することを願って.

    マジック8ボールサービス
    物事を楽しくするために、例を考えてくださいMattel を模倣するRESTful APIの作成を求めますMagic 8-Ball 1946年に発明されたおもちゃ

    意識していない人のために、マジック8ボールは、基本的な占いタスクを実行する目新しいアイテムです.8ボールのイメージを上に直面して、ボールを持っている人はyesの質問をし、答えを明らかにする上でそれを回す.答えは魔法のようにおもちゃの中の暗い黒い海の上に浮かんでいる.

    オリジナルのデザインには、20個のユニークな答えが含まれており、受け入れ条件はRESTful APIでこれらの応答だけを許可することです.

    10肯定的な答えは緑の弾丸に注目され、残りの10は非コミットメント(黄色)と負(赤)の答えの等しい組み合わせです.
    APIの消費者は単に可能なオプションのリストからランダムな回答を返す標準の取得要求をする必要があります.バリデーション目的のために、Mattelはまた、この新しいサービスから利用可能なすべての答えのリストを検索するために、第2の終点を好みます.
    私のデザインでは、以下のエンドポイントでこれらの要件を満たすことができます.
  • GET /answer - ランダムに20の利用可能な回答のいずれかを返します
  • GET /answers - すべての20の利用可能回答のリストを返す

  • GOから始める
    訪問中download page Goサイトでは、インストールプログラムがJavaプログラミング言語から始めるのと非常に似ていることに気づいた.インストーラはウィザードのようなデザインを使い、基本的にはクリックボタンをクリックしてプロセスをナビゲートしました.完了したら、以下のコマンドを使ってインストールを成功させることを確認しました.
    ╭─me@johnjvester ~ 
    ╰─$ go version
    go version go1.17.6 darwin/amd64
    
    Intellijのアイデアを使用して、私はGo plug-in 新しいプロジェクトを起動します.

    プロジェクト名magic-eight-ball ちょうどこの努力のために右のようでした:

    いくつかの研究の後、私はGin web framework goで書かれたRESTful APIに必要な機能を提供します.
    $ go get -u github.com/gin-gonic/gin
    
    ソースコード内のGINを参照するには、次のインポートを含める必要がありました.
    import "github.com/gin-gonic/gin"
    
    今すぐマジック8ボールAPIを構築する準備が整いました.

    マジック8ボールAPIの作成
    まず最初にやりたいことはAPIのデータ側を確立することです.この例では、次のJSON構造が応答本文を構成します.
    {
      "id" : number,
      "response" : string
    }
    
    Goでは、このJSONペイロードは以下のように定義され、main.go ファイル
    type response struct {
        ID       int    `json:"id"`
        Response string `json:"response"`
    }
    
    データのすべてが静的であるので、私は標準的な答えを加えましたmain.go ファイル
    var responses = []response{
        {ID: 1, Response: "It is certain."},
        {ID: 2, Response: "It is decidedly so."},
        {ID: 3, Response: "Without a doubt."},
        {ID: 4, Response: "Yes definitely."},
        {ID: 5, Response: "You may rely on it."},
        {ID: 6, Response: "As I see it, yes."},
        {ID: 7, Response: "Most likely."},
        {ID: 8, Response: "Outlook good."},
        {ID: 9, Response: "Yes."},
        {ID: 10, Response: "Signs point to yes."},
        {ID: 11, Response: "Reply hazy, try again."},
        {ID: 12, Response: "Ask again later."},
        {ID: 13, Response: "Better not tell you now."},
        {ID: 14, Response: "Cannot predict now."},
        {ID: 15, Response: "Concentrate and ask again."},
        {ID: 16, Response: "Don't count on it."},
        {ID: 17, Response: "My reply is no."},
        {ID: 18, Response: "My sources say no."},
        {ID: 19, Response: "Outlook not so good."},
        {ID: 20, Response: "Very doubtful."},
    }
    
    レスポンス変数を活用するためにmain.go ファイル
    func getAllAnswers(c *gin.Context) {
        c.IndentedJSON(http.StatusOK, responses)
    }
    
    func getRandomAnswer(c *gin.Context) {
        rand.Seed(time.Now().Unix())
        c.IndentedJSON(http.StatusOK, responses[rand.Intn(len(responses))])
    }
    
    The getAllAnswers() 関数は単に応答リストをJSON形式で返し、getRandomAnswer() 関数はランダムに2つのオプションのうちの1つを選択し、その値をJSONフォーマットで返す.
    最後にmain() 関数はサービスによって使用されるエンドポイントとポートを設定する
    func main() {
        router := gin.Default()
        router.GET("/answers", getAllAnswers)
        router.GET("/answer", getRandomAnswer)
    
        port := os.Getenv("PORT")
        if port == "" {
            port = "8080"
        }
        if err := router.Run(":" + port); err != nil {
            log.Panicf("error: %s", err)
        }
    }
    
    それはMattelによって確立された受け入れ基準を満たすために必要なすべてです.
    アプリケーションを起動するには、次のコマンドを端末から実行します.
    ╭─me@johnjvester ~/projects/jvc/go/magic-eight-ball 
    ╰─$ go run .
    
    表示されたログには以下のものが含まれています.
    [GIN-debug] GET    /answers        --> main.getAllAnswers (3 handlers)
    [GIN-debug] GET    /answer         --> main.getRandomAnswer (3 handlers)
    [GIN-debug] Listening and serving HTTP on :8080
    
    次のコマンドでcurlリクエストを送信することでAPIをテストできます.
    ╭─me@johnjvester ~ 
    ╰─$ curl http://localhost:8080/answer
    
    これは私が受け取ったレスポンスです.
    {
        "id": 6,
        "response": "As I see it, yes."
    }% 
    
    GOODサービスを実行しないで、gitlabの新しいプロジェクトとしてコードをアップロードしました.
    https://gitlab.com/johnjvester/magic-eight-ball
    今、私はレンダリングがどのように働くかについて見る準備ができています.

    gitlab経由でレンダリングを展開する
    レンダリングを開始するには、簡単迅速かつ自由だった.私は単にGitLabの資格情報を使用することを選びました.そして、それは展開するプロジェクトを選ぶとき、物事を簡単にしました.
    開始するには、レンダリングダッシュボードの新しいボタンを選択し、Webサービスオプションを選択します.

    私の選択magic-eight-ball Gitlabプロジェクト

    レンダリングプラットフォームの中で、私は私のサービスを呼び出すことを決めたjvc-magic-eight-ball その他のオプションのデフォルト値を保持します.

    スクロールダウン、私はこのサービスを無料プランで実行し続けることを選びました.
    Render - Plan Options
    次に、「Webサービスを作成」ボタンをクリックします.数分以内にRender dashboard 私のサービスが上手く走っていることを教えてくれました.

    私は、私のサービスのためにURLに要請を送りましたhttps://jvc-magic-eight-ball.onrender.com/answer ), そして、次のレスポンスを受けました.
    {
        "id": 5,
        "response": "You may rely on it."
    }
    
    わずか数回のクリックで、レンダリングプラットフォームに行った最初のRESTful APIを展開しました.さらに重要なことは、レンダリングのアプローチは私のタスクを完了するために任意のdevopスキルや知識を必要としませんでした.

    結論
    この記事の紹介は、数年後(過去数年でもない)歴史的な出来事を保持し、思い出す能力を話しました.この全体の実験がスタートからフィニッシュまで私の時間の1時間未満かかったという事実は確かにそれらのイベントの別の1つになる価値がある.
    2021年から始まって、以下のミッションステートメントによって生きていきました.

    “Focus your time on delivering features/functionality which extends the value of your intellectual property. Leverage frameworks, products, and services for everything else.”

    • J. Vester

    この記事では、私は非常に小さなソースコードですぐに機能的なAPIを生産することができました、しかし、私は単に一連の小さなステップを実行することによって、クラウドプロバイダーにプロジェクトを配備することができました.ゼロ・デップを約束し、ゼロ・デップを届けた.これは私の顧客に機能を提供する上で私の時間を集中することができました.
    あなたが完全なソースコードに興味があるならば、ちょっとgitlabに移動してください
    https://gitlab.com/johnjvester/magic-eight-ball
    現在、私は現在、Heroku生態系で実行しているAPIとアプリケーションを持っているということを知って、私はHerokuからのレンダリングが次の数週でどのように見えるかについて調べ始めます.これまでのところ、私はレンダリングが提供するものに非常に感銘を受けています.
    本当に素晴らしい一日を!