In this article, we’ll be looking at creating a REST API using Deno, Oak framework and its Router. We will also be testing our API using Postman in Chrome or RESTClient in Firefox.
In the previous article, we have learned about what is deno, it’s advantages. If you haven’t read yet check here.
Let’s take a look at the API we want to build and what it can do.
Let’s build an API that will:
- Handle CRUD for an Locations.
- Use the proper HTTP verbs to make it RESTful (GET, POST, PUT, and DELETE)
- Return JSON data.
Installation:
I am using Windows to develop this REST API. To install Deno on your machine just type the below command mentioned command in the terminal.
PowerShell (Windows):
$iwr https://deno.land/x/install/install.ps1 -useb | iex
See here for other operating system installation guide.
To verify if the deno is installed or not. Just type deno --version
on your terminal it will show an install version of Deno.
$ deno --version
deno 1.0.0
v8 8.4.300
typescript 3.9.2
Getting Started
Here is our file structure. We won’t need many files and we’ll keep this very simple.
project
└───Controllers
│ locations.ts
│ routes.ts
| server.ts
| types.ts
- Controllers: has a logic of the application and handles the client requests.
- Routes.ts: containing API routes.
- Server.ts: code to run localhost server.
- Types.ts: contain the model definition.
At any point in time, if you are stuck somewhere, you can follow this link to get the complete code.
Setting Up Our Server (server.ts)
create server.ts
file and import Application
from https://deno.land/x/oak/mod.ts and setup the port.
We will add our routes in the two methods .use()
and .listen
router.routes() — It allows all the routes defined in the routes.ts file through the router object.
router.allowedMethods() — It allows all the methods used in Oak routing such as GET, POST, PUT, DELETE.
Set up routes
Now let’s create the routes.ts
file and import Router from https://deno.land/x/oak/mod.ts.
and create routes for our API.
Create model
Now let’s create type.ts
file
This file pertains the interface of the location.
Create our locations
We will create an initial array of locations object in locations.ts
file.
Now we will create different methods one by one in location.ts
file and test it with Postman.
getLocations It will return all locations on list. As stated above. Making GET request on
/api/v1/locations/
Testing on postman
getLocation: It will return the single location by Id and error if the product not found. Making GET request on /api/v1/locations/:id
Testing on Postman
addlocation: It will add the location to the list. Making POST request on /api/v1/locations.
updateLocation: It will update the location. Making PUT request on /api/v1/locations/:id.
deleteLocation: This will delete the location from the list. Making the DELETE on /api/v1/locations/:id
After creating these functions, we need to import it to the router file
. complete the locations.ts
by exporting these functions.
export {getLocations, getLocation,addLocation, updateLocation, deleteLocation }
Conclusion
We now have the means to handle CRUD on a specific resource through our own API. Using the above techniques above will be a good foundation to move into building larger and most robust APIs.
This has been a quick look at creating a Deno Rest API using Oak. There are many more things you can do with your own APIs. You can add authentication, create better error messages, and add different sections.
If you have suggestions please let me know in the comments section🙋♂️
Happy Coding 😃
Thank You! 😍
Here is the GitHub Repository for all the source code.