I have built a React app that uses JSON:API to pull in data, but now I want to implement user registration.
JSON:API doesn’t do user registration because it isn’t a CRUD operation.
However, the links above explain that core provides a REST endpoint for handling user registration.
The documentation gives this example:
curl --header "Content-type: application/json" --request POST http://drupal.d8/user/register
But this example seems incomplete– for example, where is the username?
My website is configured with the Email Registration module and only an email address is required to register, but where do I submit the email address?
EDIT: If you’re answering this question, I will accept an answer that uses core’s username/email address combo for registration; it doesn’t have to be specific to the Email Registration module. The problem is that I can’t find an example of how to register users with JSON:API, and there is no documentation.
Here’s the code I tried in React:
UserRegistrationForm.tsx
import * as React from 'react'; import { useForm } from 'react-hook-form'; import { IonButton } from '@ionic/react'; import { baseUrl, basicHeaders } from '../utils/globals'; import handleErrors from '../utils/fetchHandleErrors'; interface InterfaceRegistrationFormInput { email: string; } const UserRegistrationForm: React.VFC = () => { const { register, handleSubmit, errors } = useForm<InterfaceRegistrationFormInput>(); const onSubmit = (formData: InterfaceRegistrationFormInput) => { fetch(`${baseUrl}/user/register`, { method: 'POST', headers: basicHeaders, body: formData, }) .then(handleErrors) .catch((error) => Promise.reject(new Error(error))); }; return ( <> <form onSubmit={handleSubmit(onSubmit)}> <label htmlFor="email"> Email address <br /> <input name="email" type="email" ref={register({ required: true })} /> </label> <IonButton type="submit">Register</IonButton> </form> </> ); };