
Security News
Python Adopts Standard Lock File Format for Reproducible Installs
Python has adopted a standardized lock file format to improve reproducibility, security, and tool interoperability across the packaging ecosystem.
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 176 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
Python has adopted a standardized lock file format to improve reproducibility, security, and tool interoperability across the packaging ecosystem.
Security News
OpenGrep has restored fingerprint and metavariable support in JSON and SARIF outputs, making static analysis more effective for CI/CD security automation.
Security News
Security experts warn that recent classification changes obscure the true scope of the NVD backlog as CVE volume hits all-time highs.