![Maven Central Adds Sigstore Signature Validation](https://cdn.sanity.io/images/cgdhsj6q/production/7da3bc8a946cfb5df15d7fcf49767faedc72b483-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
With Apiker, you can create an API in only 3 lines of code
import { apiker, res } from "apiker";
const routes = { "/users/:id/hello": () => res("Hello World!") };
apiker.init({ routes, exports, objects: ["Common"] });
➡️ GET /users/my-user/hello
{ "message": "Hello World!" }
Check out the Getting Started page to begin.
Note: To run Apiker, you need a Cloudflare account with Durable Objects access.
import { res, res_400 } from "apiker";
export const myRouteHandler = async ({
request, // https://developers.cloudflare.com/workers/runtime-apis/request/
body, // The body of your request, such as form params or plaintext, depending on request content-type
headers, // Request headers. Response headers are located at `apiker.responseHeaders`
matches, // Your query params and route parts
state // The state method used to interact with permanent storage (check the examples below & docs for more info)
}) => {
// If we want to allow POST only, we explicitly check for it :
if(request.method !== "POST"){
// returns 400 Bad Request error. You can also use `res("Invalid Method", 405)`
// https://github.com/hodgef/apiker/blob/master/src/components/Response/Response.ts#L10
return res_400();
}
// We'll return the request body passed, for example POST form parameters
// `res` and `res_000` functions respond with JSON. To respond with raw text you can use `resRaw`
// https://github.com/hodgef/apiker/blob/master/src/components/Response/Response.ts#L23
return res({ body });
};
const routes = {
"/users/myroute": myRouteHandler
};
Discuss: https://github.com/hodgef/apiker/issues/133
Common
object (shared by all visitors)import { res } from "apiker";
export const example1_saveValueCommon = async ({ state }) => {
// Using `state` with no parameters will default to the Common object
const count = ((await state().get("count")) || 0) + 1;
await state().put({ count });
return res({ count });
};
➡️ GET /example1
{ "count": 1 }
import { res } from "apiker";
export const example2_saveValueDiffObject = async ({ state }) => {
const count = (await state("Example2").get("count") || 0) + 1;
await state("Example2").put({ count });
return res({ count });
};
// In index.js ...
apiker.init({
...
objectStateMapping: {
// One object instance per user IP
Example2: OBMT.SIGNEDIP
}
});
➡️ GET /example2
{ "count": 1 }
import { res } from "apiker";
export const example3_instancePerRouteParam = async ({ state, matches }) => {
// Get username from route (/example3/:username)
const username = matches.params.username;
const acceptedUsernames = ["bob", "rob", "todd"];
if (acceptedUsernames.includes(username)) {
const { name = username, count = 0 } = (await state("Example3").get("username")) || {};
const payload = {
username: {
name,
count: count + 1
}
};
await state("Example3").put(payload);
return res(payload);
} else {
return res({ acceptedUsernames });
}
};
// In index.js ...
apiker.init({
...
objectStateMapping: {
// Mapped to the parameter `username` in the route
Example3: "username"
}
});
➡️ GET /example3/bob
{
"username": {
"name": "bob",
"count": 1
}
}
For more details and examples, check out the Documentation.
PRs and issues are welcome. Feel free to submit any issues you have at: https://github.com/hodgef/Apiker/issues
FAQs
API for Cloudflare Workers & Wrangler
The npm package apiker receives a total of 0 weekly downloads. As such, apiker popularity was classified as not popular.
We found that apiker demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.