Getting Started

Ready to start your first Gin app? First, move to a workspace directory:

$ cd ~/workspace

Create a new Gin app called demo:

$ gin new demo
Creating app demo...
  created file demo/spec/models/.gitkeep
  created file demo/app/models/.gitkeep
  created file demo/spec/spec_helper.lua
  created file demo/config/settings.lua
  created file demo/spec/controllers/1/pages_controller_spec.lua
  created file demo/db/schemas/.gitkeep
  created file demo/db/mysql.lua
  created file demo/config/nginx.conf
  created file demo/config/errors.lua
  created file demo/lib/.gitkeep
  created file demo/config/application.lua
  created file demo/app/controllers/1/pages_controller.lua
  created file demo/db/migrations/.gitkeep
  created file demo/.gitignore
  created file demo/config/routes.lua

A new hello world app has been created for you. CD into the demo directory:

$ cd demo

The greenfield application just created for you comes with a simple controller and its test. You can run the test with Busted, the test library that is already included in Gin. To run all the tests for your application:

$ busted

●
1 success / 0 failures / 0 pending : 0.039959 seconds.

We can now start up our demo application. Let's do so:

$ gin start
Gin app in development was succesfully started on port 7200.

Open up the browser and point it to http://localhost:7200/. You should see an error message:

{
    code: 101,
    message: "Invalid Accept header format."
}

Do not worry about the fact that you're seeing this error. It is expected behavior: Gin uses the HTTP header Accept to implement API versioning, therefore by accessing your Gin demo application directly from your browser you're not setting it correctly, which is what Gin is complaining about.

It is however very practical for developers to play around with their API in a browser. To support this, Gin comes with an API console that can be accessed in a browser at the address http://localhost:7200/ginconsole.

Try it out now: open up the API console, then click on the HIT button. You should now see the Gin hello world of your demo application, in the response body:

{
  "message": "Hello world from Gin!"
}