0.0.31 • Published 4 months ago
new-request v0.0.31
new-request
Use 3rd party REST APIs with confidence.
Twilio SMS, SendGrid, Postmark, … show more
Benefits
- Type Safety: Fully typed request and response bodies.
- Easy Migration: Uses the API's request body format.
- Small in Size: Mostly types. Minimum runtime code.
- Error Handling without using a
try...catch
block. - Fetch API ❤️ with a custom
fetch
function support.
Usage
npm i new-request
All modules have a similar structure.
// Pseudocode using TypeScript type names.
const response = await moduleName(RequestBody, Options);
// Response body type can be easily narrowed.
if (response.ok) response.body; // ResponseBody
if (!response.ok) response.body; // ResponseBody4xx
Reference the services section for all available modules.
import { send // This will autocomplete module import in most IDEs.
The parameter types are exported for TypeScript and JSDoc usage.
import type { RequestBody, Options } from 'new-request/email/send-grid/v3/POST/index.js';
type Email = NonNullable<RequestBody['from']>;
Example
import { sendEmail } from 'new-request/email/send-grid/v3/POST/index.js';
// Everything is typed and autocompleted.
const response = await sendEmail(
// First parameter closely matches the API's request body.
// In this example, reference the SendGrid API documentation.
// https://docs.sendgrid.com/api-reference/mail-send/mail-send
{
personalizations: [{ to: [{ email: 'recipient@example.com' }] }],
subject: 'title',
content: [{ type: 'text/plain', value: 'body' }],
from: { email: 'sender@example.com' }, // optional, override
// ...
},
// Second parameter `options` can be modularized and reused.
{
apiKey: 'SG.this_is_a_secret_api_key.do_not_expose',
from: { email: 'sender@example.com' }, // required
// Custom `fetch` function can be provided here.
},
);
if (response instanceof Error) {
// Handle fetch error, which is most-likely a network issue.
} else if (!response.ok) {
response.status; // 400 | 401 | 403 | 404 | 413 | 500
// The response body can be narrowed based on the status.
if (response.status !== 500) response.body; // ResponseBody4xx
if (response.status === 500) response.body; // ResponseBody5xx
} else {
response.status; // 202, Successfully sent the mail.
}
Services
Click the module name to view the TypeScript type.
POST Methods
Category | Service | Module Name |
---|---|---|
SendGrid | sendEmail | |
Postmark | sendEmail | |
SMS | Twilio SMS | sendSms |
SMS | NHN Cloud SMS | sendSms |
TTS | CLOVA Voice | textToSpeech |
Webhook | NHN Dooray! | sendMessage |
GET Methods
Service | Module Name |
---|---|
NEIS 학교 기본 정보 | searchSchool |
0.0.30
4 months ago
0.0.31
4 months ago
0.0.21
6 months ago
0.0.20
9 months ago
0.0.17
10 months ago
0.0.16
1 year ago
0.0.15
1 year ago
0.0.14
2 years ago
0.0.13
2 years ago
0.0.12
2 years ago
0.0.11
2 years ago
0.0.10
2 years ago
0.0.9
2 years ago
0.0.8
2 years ago
0.0.7
2 years ago
0.0.6
2 years ago
0.0.5
2 years ago
0.0.4
2 years ago
0.0.3
2 years ago
0.0.2
2 years ago
0.0.1
2 years ago