98 lines
2.4 KiB
Markdown
98 lines
2.4 KiB
Markdown
# news-server
|
|
|
|
An API centric news server. Uses Sequelize and mariaDB by default.
|
|
|
|
# Setup
|
|
|
|
Run the SQL script `sql/create_database.sql`. This will set up an empty database called `news`, and a new user called `news`.
|
|
|
|
# API
|
|
|
|
```
|
|
//NOTE: you can add a "limit" query parameter to change the default limit
|
|
GET /news?limit=10
|
|
|
|
//get latest news, up to a default limit, or specify the index "id"
|
|
GET /news/:id
|
|
|
|
//get the news starting from the beginning, up to a default limit, or specify the index "id"
|
|
GET /news/archive/:id
|
|
|
|
//result (if only a single article is specified, returns just that article rather than an array):
|
|
[
|
|
{
|
|
"index": index, //absolute index of the result
|
|
"title": title, //title of the article
|
|
"author": author, //author of the aricle
|
|
"body": body, //body of the article
|
|
"edits": edits //number of times this article has been edited
|
|
},
|
|
...
|
|
]
|
|
|
|
//get the latest titles, up to a default limit, or specify the index "id"
|
|
GET /news/titles/:id
|
|
|
|
//get the titles starting from the beginning, up to a default limit, or specify the index "id"
|
|
GET /news/archive/titles/:id
|
|
|
|
//result (if only a single article is specified, returns just that article rather than an array):
|
|
[
|
|
{
|
|
"index": index, //absolute index of the result
|
|
"title": title, //title of the article
|
|
"author": author //author of the article
|
|
},
|
|
...
|
|
]
|
|
|
|
//send a formatted JSON object, returns new index on success, or error on failure
|
|
POST /news
|
|
|
|
//arguments:
|
|
{
|
|
"key": key //the whitelist key, allows access to the POST routes
|
|
"title": title //title of the article
|
|
"author": author //author of the article
|
|
"body": body //body of the article
|
|
}
|
|
|
|
//result:
|
|
{
|
|
"ok": ok //true on success, otherwise false
|
|
"index": index //new index of the article, or undefined
|
|
"error": error //error encountered, or undefined
|
|
}
|
|
|
|
//similar to `/news/publish`, but allows overwriting an existing article
|
|
PATCH /news/:id
|
|
|
|
//arguments:
|
|
{
|
|
"key": key //the whitelist key, allows access to the PATCH routes
|
|
"title": title //title of the article
|
|
"author": author //author of the article
|
|
"body": body //body of the article
|
|
}
|
|
|
|
//result:
|
|
{
|
|
"ok": ok //true on success, otherwise false
|
|
"error": error //error encountered, or undefined
|
|
}
|
|
|
|
//remove an article from the news feed
|
|
DELETE /news/:id
|
|
|
|
//arguments:
|
|
{
|
|
"key": key //the whitelist key, allows access to the DELETE routes
|
|
}
|
|
|
|
//result:
|
|
{
|
|
"ok": ok //true on success, otherwise false
|
|
"error": error //error encountered, or undefined
|
|
}
|
|
```
|