Some API endpoints for articles #245

Sammanfogat
elegaanz sammanfogade 4 incheckningar från rest-api in i master 6 år sedan
elegaanz kommenterad 6 år sedan (Migrerad från github.com)
  • Define the API with canapi
  • Implement canapi::Provider for Post (only get and list actually)
  • Use these functions to serve the API (/api/v1/posts/<id> and /api/v1/posts)
  • Document the API with Swagger (couldn't test it, I hope it will be served correctly 😕)

It is a first step for #5

- Define the API with canapi - Implement `canapi::Provider` for `Post` (only `get` and `list` actually) - Use these functions to serve the API (`/api/v1/posts/<id>` and `/api/v1/posts`) - Document the API with Swagger (couldn't test it, I hope it will be served correctly :confused:) It is a first step for #5
igalic (Migrerad från github.com) granskad av 6 år sedan
igalic (Migrerad från github.com) lämnade en kommentar

👀

👀
@ -5,6 +5,7 @@ version = "0.2.0"
[dependencies]
activitypub = "0.1.3"
atom_syndication = "0.6"
canapi = "0.1"
igalic (Migrerad från github.com) kommenterad 6 år sedan

exciting Version number

exciting Version number
@ -0,0 +1,45 @@
openapi: "3.0"
igalic (Migrerad från github.com) kommenterad 6 år sedan

is this autogenerated?

is this autogenerated?
@ -0,0 +13,4 @@
}
}
};
}
igalic (Migrerad från github.com) kommenterad 6 år sedan

sometimes i dream of lisp indentation style in Javascript. soon, I'll start dreaming of lisp indentation style in rust

sometimes i dream of lisp indentation style in Javascript. soon, I'll start dreaming of lisp indentation style in rust
@ -58,0 +93,4 @@
}
fn create(_conn: &PgConnection, _query: PostEndpoint) -> Result<PostEndpoint, Error> {
unimplemented!()
igalic (Migrerad från github.com) kommenterad 6 år sedan

what's the point of these queries and the override of the query variable?

what's the point of these queries and the override of the query variable?
igalic (Migrerad från github.com) kommenterad 6 år sedan

aahh, you're fetching different parts of the same article, and stuffing them into different boxes of the query variable!

aahh, you're fetching different parts of the same article, and stuffing them into different boxes of the query variable!
igalic (Migrerad från github.com) kommenterad 6 år sedan

why does this file keep changing with every new build?

why does this file keep changing with every new build?
igalic (Migrerad från github.com) kommenterad 6 år sedan

such as?

such as?
elegaanz (Migrerad från github.com) granskad av 6 år sedan
@ -0,0 +1,45 @@
openapi: "3.0"
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

not yet, but it may be possible thanks to canapi…

not yet, but it may be possible thanks to canapi…
elegaanz (Migrerad från github.com) granskad av 6 år sedan
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

it is updated every time you run Plume. However, extracting i18n related task to an external tool may be better… 🤔

it is updated every time you run Plume. However, extracting i18n related task to an external tool may be better… :thinking:
elegaanz (Migrerad från github.com) granskad av 6 år sedan
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

For instance, if you GET /api/v1/posts?title=Hello%20world, only posts with the Hello world title should be shown (title is not the best example, but author_id could be interesting for instance)

For instance, if you `GET /api/v1/posts?title=Hello%20world`, only posts with the `Hello world` title should be shown (`title` is not the best example, but `author_id` could be interesting for instance)
elegaanz (Migrerad från github.com) granskad av 6 år sedan
@ -58,0 +93,4 @@
}
fn create(_conn: &PgConnection, _query: PostEndpoint) -> Result<PostEndpoint, Error> {
unimplemented!()
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

actually, the PostEndpoint type is here to represent both the client's query and the result sent by the API. filter is what is requested by the client, so if any filter have been specified I update the SQL query to only return the requested posts.

actually, the `PostEndpoint` type is here to represent both the client's query and the result sent by the API. `filter` is what is requested by the client, so if any filter have been specified I update the SQL `query` to only return the requested posts.
elegaanz (Migrerad från github.com) granskad av 6 år sedan
@ -58,0 +93,4 @@
}
fn create(_conn: &PgConnection, _query: PostEndpoint) -> Result<PostEndpoint, Error> {
unimplemented!()
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

not sure if I'm clear, tell me if not 😁

not sure if I'm clear, tell me if not :grin:
igalic kommenterad 6 år sedan (Migrerad från github.com)

i just realized how easy CLI mappings would be to implement, once the API is in place.

i just realized how easy CLI mappings would be to implement, once the API is in place.
trinity-1686a granskad av 6 år sedan
Ägare

So is this (at least partially) blocked by #149, or not related?

So is this (at least partially) blocked by #149, or not related?
elegaanz (Migrerad från github.com) granskad av 6 år sedan
elegaanz (Migrerad från github.com) kommenterad 6 år sedan

No, actually we just need to get the raw query params, and deserialize them to PostEndpoint with something like serde_qs.

No, actually we just need to get the raw query params, and deserialize them to `PostEndpoint` with something like `serde_qs`.
Pull-förfrågan har sammanfogats som 236cf14406.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b rest-api master
git pull origin rest-api

Step 2:

Merge the changes and update on Forgejo.
git checkout master
git merge --no-ff rest-api
git push origin master
Logga in för att delta i denna konversation.
Inga granskare
Ingen Milsten
Ingen tilldelad
2 Deltagare
Notiser
Förfallodatum
Förfallodatumet är ogiltigt eller utanför gränserna. Använd formatet 'åååå-mm-dd'.

Inget förfallodatum satt.

Beroenden

No dependencies set.

Reference: Plume/Plume#245
Laddar…
Det finns inget innehåll än.