0.0.31 • Published 8 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...catchblock.
- Fetch API ❤️ with a custom fetchfunction support.
Usage
npm i new-requestAll 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; // ResponseBody4xxReference 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
8 months ago
0.0.31
8 months ago
0.0.21
10 months ago
0.0.20
1 year ago
0.0.17
1 year ago
0.0.16
1 year ago
0.0.15
2 years 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