Рубрики
Без рубрики

Разработка GraphQL mutation API с помощью Spring Boot

В предыдущем посте я уже рассказывал о GraphQL, реализованном для чтения данных API, вы можете ознакомиться с ними i… С тегами graphql, springboot, java, api.

В предыдущем посте я уже рассказывал о GraphQL, реализованном для чтения данных API, вы можете ознакомиться с ними здесь

В этом посте я расскажу о том, как реализовать API mutation GraphQL с помощью spring-boot.

Чтобы реализовать GraphQL mutation API, вам нужно 2 вещи.

  • Графический файл, в котором мы определяем тип и объект
  • Класс реализует мутацию GraphQL Распознаватель

Мы создадим API для создания нового сообщения в блоге (в исходном коде я также реализую аутентификацию и создаю новый пользовательский api с использованием мутации graphql, так что вы можете проверить больше)

  1. Графический файл
type Mutation{
    createUserInfo(input: CreateUserInfo!) : Boolean!
    authenticateUserInfo(input: AuthenticateUserInfo!): JwtResponse!
    createBlog(input: CreateBlog!) : Blog!
}

input CreateUserInfo{
    username: String!
    password: String!
    fullname: String!
}

input CreateBlog{
    title: String!
    content: String!
}

input AuthenticateUserInfo{
    username: String!
    password: String!
}

type JwtResponse{
    token: String!
}


Мутация типа – это то, где мы определяем, какие методы мы будем использовать для мутации

Мы определяем поля или объект в теле запроса по типу (например, введите Create User Info, введите Create Blog).

  1. Распознаватель мутаций GraphQL:

Нам нужно создать мутацию graphql для мутации блога, как показано ниже

import com.coxautodev.graphql.tools.GraphQLMutationResolver;
import donald.apiwithspringboot.model.Blog;
import donald.apiwithspringboot.model.mutation.CreateBlog;
import donald.apiwithspringboot.repository.BlogRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;


@Component
@AllArgsConstructor
public class BlogMutation implements GraphQLMutationResolver {

    private BlogRepository blogRepository;


    @Transactional
    public Blog createBlog(CreateBlog body){
        String title = body.getTitle();
        String content = body.getContent();
        return blogRepository.save(new Blog(title, content));
    }


}

3.Протестируйте graphql api с помощью postman: Вы можете использовать graphiql или postman. Но я уже рассказывал о graphiql в предыдущем посте, поэтому в этом посте я буду использовать postman.

Имейте в виду, что нам нужна аутентификация для любого URL-адреса, кроме URL, содержащего конечную точку типа “/user” или “/authenticate”, как определено в файле WebSecurityConfig

@Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {

        httpSecurity.csrf().disable()

                .authorizeRequests().antMatchers("/authenticate","/user").permitAll().

        anyRequest().authenticated().and().

        exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()

                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

        httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);

        httpSecurity.logout().logoutSuccessUrl("/authenticate").logoutUrl("/logout").permitAll();

    }

Запустите приложение с помощью: mvn spring-boot: бежать

Сначала нам нужно получить токен с помощью authenticate api

И используйте этот токен для создания нового сообщения в блоге:

Как обычно, вы можете ознакомиться с исходным кодом для этого в github

Записи: Если вы чувствуете, что этот блог поможет вам, и хотите выразить признательность, не стесняйтесь заходить:

Это поможет мне внести более ценный вклад.

Оригинал: “https://dev.to/cuongld2/develop-graphql-mutation-api-with-spring-boot-20pd”