Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yorshka20/koa-demo
a RESTful api demo with koa.
https://github.com/yorshka20/koa-demo
api jwt koa prisma restful typescript
Last synced: 4 days ago
JSON representation
a RESTful api demo with koa.
- Host: GitHub
- URL: https://github.com/yorshka20/koa-demo
- Owner: yorshka20
- Created: 2023-08-30T08:48:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-05T09:32:37.000Z (over 1 year ago)
- Last Synced: 2024-12-06T08:04:36.836Z (2 months ago)
- Topics: api, jwt, koa, prisma, restful, typescript
- Language: TypeScript
- Homepage:
- Size: 377 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Koa RESTful API demo
this project is a implementation demo which meets the requirement described in `REQUIREMENT.md`.
## Introduction
this is a node.js RESTful api server built by koa + typescript + prisma.
it contains:
- a set of `CRUD` method for single entity: user
- an api to query multiple users.
- a `login` api to get the jwt token.## API description
we support 6 apis at this project. five for entity CRUD and one for login(to get jwt token)
### login
- method: `POST`
- url: /login
- params:```
loginRequest {
name String required // any string will be ok
}
```---
### get users
- method: `GET`
- url: /users
- params:```
?name=xxx&mail=xxx
```---
### get user
- method: `GET`
- url: /users/:userId
- params: none---
### create user
- method: `POST`
- url: /users
- params:```
createRequest {
name String required
email String required // should be valid email format.
password String required
}
```---
### update user
- method: `PUT`
- url: /users
- params:```
updateRequest {
id String required
name String optional
email String optional
password String optional
}
```---
### delete user
- method: `DEL`
- url: /users/:userId
- params: none## Start
### installation
run `pnpm i` or `yarn` to install the node_modules of this project.
### env config
we put important data in `.env` file which is stored locally and will not be uploaded to git.
> the .env file is not provided in this public repository.
after receiving the `.env` content, create a `.env` file and paste the content into it, and put it at the root of project like below:
![env](./images/1.png)
### initialize db
we use [prisma](https://www.prisma.io/docs/getting-started) as the ORM lib in this project. before running your server, you should generate the `prismaClient` and `initialize the db(optional)`.
by generating prismaClient, run:
```
pnpm prisma generate
```> !IMPORTANT: every time you changed the `prisma.scheme`, you should regenerate the prismaClient.
by initializing the db, run:
```
pnpm prisma migrate --name init
```> !IMPORTANT: since we have already migrated the verceldb to sync with our prisma scheme, this step can be **skipped**.
we use a [vercel PostgreSQL](https://vercel.com/dashboard/stores) in this project. the verceldb is free but limited, so there may be updates if we run out of the resource in verceldb.
Updating will be made by change the `.env` file content.
### start the server
after doing the above procedures, you can launch the server by running:
```
pnpm dev
```or
```
yarn dev
```also you can build it by `pnpm built` and serve it by running
```
node dist/index.js
```or
```
pnpm serve
```## test api
I use `Postman` to test api.
in `resource` folder there is a postman config which is exported by me. you can import this config into postman to test the `6` apis supported by this server.
![postman](./images/2.png)